package com.gp8.tier3;

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.ArrayList;

public interface ServiceGestionPiaffeur extends Remote {
	
	/**
	 * Récupere un abonné à partir de son id
	 * @param id
	 * @return
	 * @throws RemoteException
	 */
	Piaffeur getAbonne(int id) throws RemoteException;
	
	/**
	 * Créé un compte
	 * @param pMail
	 * @param pPseudo
	 * @param pPassword
	 * @return
	 * @throws RemoteException
	 */
	Piaffeur CreationCompte(String pMail, String pPseudo, String pPassword) throws RemoteException;
	
	/**
	 * Connecte un compte
	 * @param pMail
	 * @param pPassword
	 * @return
	 * @throws RemoteException
	 */
	Piaffeur ConnexionCompte(String pMail, String pPassword) throws RemoteException;
	
	/**
	 * Deconnecte un compte
	 * @param id
	 * @return
	 * @throws RemoteException
	 */
	Boolean DeconnexionCompte(int id) throws RemoteException;
	
	/**
	 * Supprime un compte
	 * @param id
	 * @return
	 * @throws RemoteException
	 */
	Boolean SuppressionCompte(int id) throws RemoteException;
	
	/**
	 * Ajoute un abonnement
	 * @param idSuiveur
	 * @param idSuivi
	 * @return
	 * @throws RemoteException
	 */
	Boolean AjouterAbonnement(int idSuiveur, int idSuivi) throws RemoteException;
	
	/**
	 * Supprime un abonnement
	 * @param idSuiveur
	 * @param idSuivi
	 * @return
	 * @throws RemoteException
	 */
	Boolean SupprimerAbonnement(int idSuiveur, int idSuivi) throws RemoteException;
	
	/**
	 * Retourne la liste de tous les abonnements d'une personne
	 * @param id
	 * @return
	 * @throws RemoteException
	 */
	ArrayList<Piaffeur> MesAbonnements(int id) throws RemoteException;
	
	/**
	 * Retourne la liste de tous les abonnés d'une personne
	 * @param id
	 * @return
	 * @throws RemoteException
	 */
	ArrayList<Piaffeur> MesAbonnes(int id) throws RemoteException;
	
	/**
	 * Ajoute un message
	 * @param id
	 * @param message
	 * @return
	 * @throws RemoteException
	 */
	Boolean AjouterMessage(int id, String message) throws RemoteException;
	
	/**
	 * Supprime un message
	 * @param id
	 * @param idMessage
	 * @return
	 * @throws RemoteException
	 */
	Boolean SupprimerMessage(int id, int idMessage) throws RemoteException;
	
	/**
	 * Retourne la liste de tous les messages d'une personne
	 * @param id
	 * @return
	 * @throws RemoteException
	 */
	ArrayList<Piafferie> MesMessages(int id) throws RemoteException;
	
	/**
	 * Recherche dans les personnes
	 * @param pseudo
	 * @return
	 * @throws RemoteException
	 */
	ArrayList<Piaffeur> RecherchePiaffeur(String pseudo) throws RemoteException;
	
	/**
	 * Recherche dans les messages
	 * @param message
	 * @return
	 * @throws RemoteException
	 */
	ArrayList<Piafferie> RecherchePiafferie(String message) throws RemoteException;
	
	/**
	 * Renvoi toute la timeline
	 * @param pID
	 * @return
	 * @throws RemoteException
	 */
	ArrayList<Piafferie> MaTimeline(int pID) throws RemoteException;
	

}
